Skip to content

SK-2986 use admin service-account PAT for release version-bump push - #371

Merged
Devesh-Skyflow merged 1 commit into
mainfrom
devesh/SK-2986-release-bypass-token
Jul 24, 2026
Merged

SK-2986 use admin service-account PAT for release version-bump push#371
Devesh-Skyflow merged 1 commit into
mainfrom
devesh/SK-2986-release-bypass-token

Conversation

@Devesh-Skyflow

Copy link
Copy Markdown
Collaborator

Why

Branch protection rulesets now enforce PR + 1 approval and the Test status check on main/v1/v3. The automated release flow (shared-build-and-deploy.yml) pushes the version-bump commit directly to the release branch as github-actions[bot], which is not a ruleset bypass actor — so that push would be rejected and releases would break.

What

Point the release actions/checkout at PAT_ACTIONS (the skyflow-service-it admin service account). checkout persists this credential, and the later git push origin <branch> reuses it — so the push is attributed to a repo admin and satisfies the ruleset's Repository Admin bypass.

No ruleset changes required; the bypass is already configured.

⚠️ Verify before merge

This works only if PAT_ACTIONS is owned by skyflow-service-it (or another repo-admin) and has Contents: write. It is currently used only for the read-only commit-message checker. If it lacks push scope, swap token: for a write-capable PAT/App identity that is a bypass actor.

Note

This PR is itself the first exercise of the new protection — it requires the Test check to pass and 1 approval before merge.

Ref: SK-2986 · SDK Branch Protection — Gap Analysis

🤖 Generated with Claude Code

Branch protection now enforces PR+approval on main/v1/v3. The automated
version-bump commit pushes directly to the release branch as
github-actions[bot], which is not a ruleset bypass actor, so the push
would be rejected.

Point the release checkout at PAT_ACTIONS (skyflow-service-it, a repo
admin) so its credential is persisted and reused for the push, which
then satisfies the ruleset's repo-admin bypass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Gitleaks Findings: No secrets detected. Safe to proceed!

@github-actions

Copy link
Copy Markdown

Semgrep Findings: Issues with Error level severity are found (Error is Highest severity in Semgrep), Please resolve the issues before merging.

@Devesh-Skyflow
Devesh-Skyflow merged commit 9846916 into main Jul 24, 2026
16 of 18 checks passed
Devesh-Skyflow added a commit that referenced this pull request Jul 24, 2026
…v1) (#373)

Same fix as #371 (main) / #372 (v3), applied to the v1 branch's copy of
shared-build-and-deploy.yml. The v1 release pipeline (release-v1.yml)
pushes the version-bump commit directly to the protected v1 branch
(git push origin HEAD:v1) as github-actions[bot], which is not a ruleset
bypass actor, so the push would be rejected.

Point the release checkout at PAT_ACTIONS (skyflow-service-it, a repo
admin) so its credential is persisted and reused for the push, which
then satisfies the ruleset's repo-admin bypass.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Devesh-Skyflow added a commit that referenced this pull request Aug 3, 2026
…ssing

A reusable workflow only sees secrets declared in its workflow_call
secrets block AND passed by the caller. Repo secrets are not in scope,
unlike in a normal workflow. Two were referenced by their repo names
without being declared, so both evaluated to an empty string:

  PAT_ACTIONS
    Used as the checkout token. Empty means checkout fails outright with
    'Input required and not supplied: token' - the failure on
    flowvault-release/26.8.1. Added by #371 (SK-2986) without the
    declaration or the pass-through.

  TEST_CREDENTIALS_FILE_STRING
    Feeds jsdaniell/create-json. Empty means credentials.json was written
    empty on every release build - internal and public - and then copied
    into each module, with no error at all. Confirmed by comparing the
    step's logged inputs: the reusable workflow logs only
    'name: credentials.json' with json absent, while the same expression
    in pr.yml (not reusable) logs 'json: ***'.

Both are now declared required: true and passed by internal-release.yml
and release.yml, so a future omission fails at the call site rather than
silently emptying out. The checkout token line is restored to keep #371's
intent: the version-bump push uses the admin service account so it
satisfies the branch-protection ruleset's repo-admin bypass.

Audited the whole file: no other undeclared references, and every
declared secret is passed by both callers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant